Source code

Revision control

Copy as Markdown

Other Tools

{
"info": {
"_postman_id": "ccd6117a-6d61-4617-a6a1-7115db4d4d92",
"name": "WAVE Server REST API Tests",
},
"item": [
{
"name": "Read Available Tests",
"item": [
{
"name": "Read Available Tests",
"event": [
{
"listen": "test",
"script": {
"id": "051bef94-5544-4ddb-9d85-167677ebecb2",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var availableTests = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(typeof availableTests).to.equal(\"object\");",
" for (var api of Object.keys(availableTests)) {",
" pm.expect(availableTests[api]).to.be.an.instanceof(Array);",
" var apiRegExp = new RegExp(\"^/\" + api, \"i\");",
" for (var test of availableTests[api]) {",
" pm.expect(test).to.match(apiRegExp);",
" }",
" }",
"});",
"",
"var includedTests = [];",
"var excludedTests = [];",
"var specialTimeoutTest = \"\";",
"",
"var apis = Object.keys(availableTests);",
"for(var api of apis) {",
" if (availableTests[api].length > 50) {",
" var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);",
" if (subDirs.length > 2) {",
" includedTests.push(\"/\" + api);",
" excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);",
" specialTimeoutTest = availableTests[api][availableTests[api].length - 1];",
" break;",
" }",
" ",
" }",
"}",
"",
"pm.globals.set(\"available_tests\", JSON.stringify(availableTests));",
"pm.globals.set(\"included_tests\", JSON.stringify(includedTests));",
"pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));",
"pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Create and Read Sessions",
"item": [
{
"name": "Start expiring session remove expiration date",
"item": [
{
"name": "Create Session With Expiration",
"event": [
{
"listen": "test",
"script": {
"id": "a8bf3e41-a7df-4c6b-8a20-3a1e6d8a51d9",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "4370546f-b08c-4f77-9bd9-1cd14400665e",
"exec": [
"var expirationDate = Date.now() + 10000;",
"pm.globals.set(\"expiration_date\", expirationDate);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"expiration_date\": {{expiration_date}}\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "3dcb5b6c-9151-49f7-a1a6-74475927b304",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"JSON structure contains expiration date\", function () {",
" pm.expect(jsonData).to.have.property(\"expiration_date\");",
"});",
"",
"var expirationDate = pm.globals.get(\"expiration_date\");",
"",
"pm.test(\"Expiration date is as specified\", function () {",
" pm.expect(Date.parse(jsonData.expiration_date)).to.equal(expirationDate);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "8d05578a-e2d6-41e9-a2a4-aa7d92bfbbce",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "4c5e3ba4-e27b-4341-8cf8-74ed047a8747",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"JSON structure contains expiration date\", function () {",
" pm.expect(jsonData).to.have.property(\"expiration_date\");",
"});",
"",
"pm.test(\"Expiration date is null\", function () {",
" pm.expect(jsonData.expiration_date).to.be.null;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "Read Public Sessions",
"item": [
{
"name": "Read Public Sessions",
"event": [
{
"listen": "test",
"script": {
"id": "1081afd8-a772-4565-b03d-b58f773cbb65",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Response is JSON Array\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.be.an.instanceof(Array);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/public",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"public"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Find Session",
"item": [
{
"name": "Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "268e8a31-87bb-4ec5-81d5-87dc74096828",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Find Session Token",
"event": [
{
"listen": "prerequest",
"script": {
"id": "625fcc2a-f7b1-403c-b5c5-56db7c5bcee5",
"exec": [
"const token = pm.globals.get(\"session_token\");",
"pm.globals.set(\"session_token_fragment\", token.split(\"-\").shift());"
],
"type": "text/javascript"
}
},
{
"listen": "test",
"script": {
"id": "8e04212f-e259-413f-98ee-e366cd3adfdd",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const sessionToken = pm.globals.get(\"session_token\");",
"",
"pm.test(\"Found token is original token\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.token).to.equal(sessionToken);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token_fragment}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token_fragment}}"
]
}
},
"response": []
},
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Find Session Too Short Fragment",
"event": [
{
"listen": "prerequest",
"script": {
"id": "6f8429e3-9c12-423c-baaf-8f8de0e4ea49",
"exec": [
"const token = pm.globals.get(\"session_token\");",
"pm.globals.set(\"session_token_fragment\", token.split(\"-\").shift());"
],
"type": "text/javascript"
}
},
{
"listen": "test",
"script": {
"id": "7f6ef567-274e-4f9d-b7fc-50f8240547e9",
"exec": [
"pm.test(\"Status code is 404\", function () {",
" pm.response.to.have.status(404);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/1234567",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"1234567"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Read Next Test",
"item": [
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Next Test of Invalid Session",
"event": [
{
"listen": "test",
"script": {
"id": "11f5c620-dc3b-4a8c-8d2f-f9663025c79f",
"exec": [
"pm.test(\"Status code is 404\", function () {",
" pm.response.to.have.status(404);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Create Session \\w Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "c67cde7e-7237-479c-a0c6-b84a533c3b1e",
"exec": [
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "24b38d64-5c24-415f-b6f6-f8d252d69ac8",
"exec": [
"var automaticTimeout = 120000;",
"var manualTimeout = 1000000;",
"var specialTimeout = 2000;",
"",
"pm.globals.set(\"automatic_timeout\", automaticTimeout);",
"pm.globals.set(\"manual_timeout\", manualTimeout);",
"pm.globals.set(\"special_timeout\", specialTimeout);",
"",
"const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));",
"const test1 = availableTests[Object.keys(availableTests)[0]][0];",
"",
"pm.globals.set(\"single_test_1\", test1);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n },\n \"types\": [\n \"automatic\",\n \"manual\"\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Next Test of Pending Session",
"event": [
{
"listen": "test",
"script": {
"id": "0806e4e0-bd1b-40ba-a7d5-74d41473a141",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const nextTest = jsonData.next_test;",
"const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"const web_root = pm.environment.get(\"web_root\");",
"",
"pm.test(\"Returned test is new session page\", function () {",
" pm.expect(test).to.equal(\"/\" + web_root + \"/newsession.html\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "9b1f2dec-9949-49ff-b466-f602b11dde5d",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Next Test of Running Session",
"event": [
{
"listen": "test",
"script": {
"id": "7fea2977-5ccb-49ee-8f07-79a7f2245f9c",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const nextTest = jsonData.next_test;",
"const parameters = nextTest.split(\"?\")[1].split(\"&\");",
"let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];",
"test = decodeURIComponent(test);",
"test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"const api = test.split(\"/\").filter(part => !!part)[0]",
"const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));",
"",
"pm.test(\"Returned test is valid test\", function () {",
" pm.expect(availableTests).to.have.property(api);",
" pm.expect(availableTests[api]).to.contain(test)",
"});",
"",
"",
"setTimeout(function () {}, 1000);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Create Result",
"event": [
{
"listen": "test",
"script": {
"id": "7cc27ee8-2f06-4e25-98fb-9872c6cf0d93",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Next Test of Completed Session",
"event": [
{
"listen": "test",
"script": {
"id": "0a73a5eb-3edb-4d15-924d-260dd22bd831",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const nextTest = jsonData.next_test;",
"const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"const web_root = pm.environment.get(\"web_root\");",
"",
"pm.test(\"Returned test is new session page\", function () {",
" pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Create Session \\w Configuration Copy",
"event": [
{
"listen": "test",
"script": {
"id": "94877ec6-70ea-4c78-acb5-20060a535653",
"exec": [
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "dcc29092-b7a1-40fc-8359-ecc655dba482",
"exec": [
"var automaticTimeout = 120000;",
"var manualTimeout = 1000000;",
"var specialTimeout = 2000;",
"",
"pm.globals.set(\"automatic_timeout\", automaticTimeout);",
"pm.globals.set(\"manual_timeout\", manualTimeout);",
"pm.globals.set(\"special_timeout\", specialTimeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\",\n \"manual\"\n ],\n \"timeouts\": {\n \"automatic\": 1000\n },\n \"labels\": [\"label1\", \"label2\"]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "8f6e2bf2-6c1e-434e-83c5-9bcc57880692",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Pause Session",
"event": [
{
"listen": "test",
"script": {
"id": "a0a80c05-a2ca-430a-8bed-46ad7978c684",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"pause"
]
}
},
"response": []
},
{
"name": "Read Next Test of Aborted Session",
"event": [
{
"listen": "test",
"script": {
"id": "00d823e0-2059-4cab-81d6-8d1de9e5b62a",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const nextTest = jsonData.next_test;",
"const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"const web_root = pm.environment.get(\"web_root\");",
"",
"pm.test(\"Returned test is new session page\", function () {",
" pm.expect(test).to.equal(\"/\" + web_root + \"/pause.html\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Stop Session",
"event": [
{
"listen": "test",
"script": {
"id": "b8211c13-667d-4970-aedc-6398c25cc40c",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"stop"
]
}
},
"response": []
},
{
"name": "Read Next Test of Aborted Session",
"event": [
{
"listen": "test",
"script": {
"id": "8aad813d-53fe-49fd-bdfc-f16ce2233ae2",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const nextTest = jsonData.next_test;",
"const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"const web_root = pm.environment.get(\"web_root\");",
"",
"pm.test(\"Returned test is new session page\", function () {",
" pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Control Session",
"item": [
{
"name": "Setup",
"item": [
{
"name": "Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "305cb915-8496-4577-b17a-e8189d66c3d1",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Pause Pending Session",
"item": [
{
"name": "Pause Session",
"event": [
{
"listen": "test",
"script": {
"id": "9d903165-9667-43b0-b210-a950d0fa1fa2",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"pause"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "0307919b-6630-48ff-ac18-10c0a47ea254",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is pending\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"pending\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Start Pending Session",
"item": [
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "f66408d5-5438-4d4f-9bfc-6d24b15e5a90",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "bae5542d-446b-4064-88ff-cc355a8f4f62",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"pm.test(\"Status is running\", function () {",
" pm.expect(jsonData.status).to.equal(\"running\");",
"});",
"",
"pm.test(\"Start date is set\", function () {",
" pm.expect(Date.parse(jsonData.date_started)).to.be.below(Date.now());",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Start Running Session",
"item": [
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "3b386952-8a37-471a-9192-f28974d975a3",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "8e56d842-325b-4356-ae1a-2465e9efe188",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is running\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"running\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Pause Running Session",
"item": [
{
"name": "Pause Session",
"event": [
{
"listen": "test",
"script": {
"id": "a183cb0b-31f0-48f6-9c20-605a16488d7d",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"pause"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "f2610594-813a-4079-afae-1510486efab4",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is paused\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"paused\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Pause Paused Session",
"item": [
{
"name": "Pause Session",
"event": [
{
"listen": "test",
"script": {
"id": "6b8ec98a-ad91-4d5c-aa07-6b3cc1255902",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"pause"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "91a38eb8-a501-457f-a9f4-b63221c957f6",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is paused\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"paused\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Start Paused Session",
"item": [
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "6e3a8c64-04cb-4c4f-b23d-64655f6e4d22",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "dcf7f6f4-6eef-4a90-a63d-df70446eb209",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is running\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"running\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Stop Running Session",
"item": [
{
"name": "Stop Session",
"event": [
{
"listen": "test",
"script": {
"id": "bee7a70d-af1f-4ad1-9c40-7abdbcc983ae",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"stop"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "217ed267-1ddb-496a-a7c5-6e29bad97c60",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"pm.test(\"Status is aborted\", function () {",
" pm.expect(jsonData.status).to.equal(\"aborted\");",
"});",
"",
"pm.test(\"Finish date is set\", function () {",
" pm.expect(Date.parse(jsonData.date_finished)).to.be.below(Date.now());",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Stop Aborted Session",
"item": [
{
"name": "Stop Session",
"event": [
{
"listen": "test",
"script": {
"id": "a255ea61-5c5a-4f0d-8a67-c244510a608c",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"stop"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "9cc7599b-d378-4b04-bada-9d76f6ca610f",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is aborted\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"aborted\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "81e44e3f-5d91-42a7-b0ab-4704eb121868",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "a44180cb-3b13-421b-b146-82901f2b45bd",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Start Aborted Session",
"item": [
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "47fb1fa9-4849-4ea9-b36e-fcec8decf62e",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "1923ced4-4361-4a4a-bf7c-4fcdf3df50f6",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is aborted\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"aborted\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "226043e5-1a81-4d36-aa7f-67b10bf407af",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "840bf970-0984-452e-9076-b6f66d0b4511",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Pause Aborted Session",
"item": [
{
"name": "Pause Session",
"event": [
{
"listen": "test",
"script": {
"id": "88c4072f-538b-4d68-9d61-f0fb017e544c",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"pause"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "2ae00eb3-49e8-4487-b27f-e7c7955fe4f4",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is aborted\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"aborted\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "70e0c783-c405-481c-b9c8-5c8bee392f97",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "85c45e3b-fae6-4a90-afd0-97678769e32c",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Setup",
"item": [
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "df4a00d1-d4f8-4b0b-892d-21528165a2cf",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "4fa59617-c922-4826-abc6-6d910e918ea4",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "d83f449d-4a2e-41c8-b2cd-5cf0cd1c404e",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Stop Pending Session",
"item": [
{
"name": "Stop Session",
"event": [
{
"listen": "test",
"script": {
"id": "98da2b86-4f9f-47dd-afc9-22ce96e73e84",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"stop"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "6d8a8202-c85d-4ada-b443-45108a372aea",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is aborted\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"aborted\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Setup",
"item": [
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "0f9df486-91cd-46fc-a711-5cf9bebb2706",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "80ee91fd-98ca-4b8e-83b6-32bf3e55a295",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Pause Session",
"event": [
{
"listen": "test",
"script": {
"id": "47f4d26a-84c2-4980-984d-dac0e95503e1",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"pause"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "6bd9e85f-eb73-47be-83b0-01be77868899",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "43ebfadb-dc68-4c41-b34e-462e427dc2ef",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Stop Paused Session Copy",
"item": [
{
"name": "Stop Session",
"event": [
{
"listen": "test",
"script": {
"id": "029ec84b-e41b-4744-8745-58c50e52bb11",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"stop"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "071d757c-41aa-4b52-9ab4-6c2afd6ed2af",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is aborted\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"aborted\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "305720a0-2c84-43d3-8fe5-55f8fdf511d8",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "84e4ab04-5acc-4428-a81a-c0b0c53b5fd9",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Setup",
"item": [
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Create Session One Test",
"event": [
{
"listen": "test",
"script": {
"id": "b7a9d459-9b39-40b2-abdc-fd8fe8b21d61",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "fcbfb0e3-a10d-4ff8-afed-f5f3c9d52090",
"exec": [
"const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));",
"const test = availableTests[Object.keys(availableTests)[0]][0]",
"",
"pm.globals.set(\"single_test\", test);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": [\"{{single_test}}\"]\n }\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "937ef61d-d6d6-4e24-bc3a-696a23cc95d6",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Next Test of Session",
"event": [
{
"listen": "test",
"script": {
"id": "29f0554b-66f5-4e26-80ff-39b3faba920a",
"exec": [
"const response = pm.response.json();",
"const nextTest = response.next_test;",
"pm.globals.set(\"current_test_url\", nextTest);",
"if (!nextTest) return;",
"const parameters = nextTest.split(\"?\")[1].split(\"&\");",
"let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];",
"test = decodeURIComponent(test);",
"test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"pm.globals.set(\"current_test\", test);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Create Result",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "9bf66427-6f39-4f0a-b065-1849d679eee6",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "8d1f3837-1f05-47e4-897c-b7c74da9bd43",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Start Completed Session",
"item": [
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "9bf0fb70-24a0-4136-99fe-8e0e488afd1e",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "7e3184bf-1741-44c8-8cd3-cff30c2deca1",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is completed\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"completed\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Pause Completed Session",
"item": [
{
"name": "Pause Session",
"event": [
{
"listen": "test",
"script": {
"id": "e323c6af-d4e5-4a05-b203-09ba67f77d28",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"pause"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "40cd04ce-850f-4903-bc24-2e62a4df98fe",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is completed\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"completed\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Stop Completed Session",
"item": [
{
"name": "Stop Session",
"event": [
{
"listen": "test",
"script": {
"id": "db7d5209-37b2-46bd-88ab-ce4e241401b2",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"stop"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "477dc63d-0b43-4226-b86e-163e2de92b67",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Status is completed\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData.status).to.equal(\"completed\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Clean Up",
"item": [
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "Update and Read Sessions",
"item": [
{
"name": "Create Default",
"item": [
{
"name": "Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "b923d95e-a7b4-49d4-ab2a-1f435c454387",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "81f36759-7ae2-42b9-81d2-79f57046b46e",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"tests\");",
" pm.expect(typeof jsonData.tests).to.equal(\"object\");",
" pm.expect(jsonData.tests).to.have.property(\"include\");",
" pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);",
" pm.expect(jsonData.tests).to.have.property(\"exclude\");",
" pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"types\");",
" pm.expect(jsonData.types).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"user_agent\");",
" pm.expect(typeof jsonData.user_agent).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"timeouts\");",
" pm.expect(typeof jsonData.timeouts).to.equal(\"object\")",
" pm.expect(jsonData.timeouts).to.have.property(\"automatic\");",
" pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");",
" pm.expect(jsonData.timeouts).to.have.property(\"manual\");",
" pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");",
" pm.expect(jsonData).to.have.property(\"browser\");",
" pm.expect(typeof jsonData.browser).to.equal(\"object\");",
" pm.expect(jsonData.browser).to.have.property(\"name\");",
" pm.expect(typeof jsonData.browser.name).to.equal(\"string\");",
" pm.expect(jsonData.browser).to.have.property(\"version\");",
" pm.expect(typeof jsonData.browser.version).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"reference_tokens\");",
" pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);",
"});",
"",
"pm.test(\"Configuration is default\", function () {",
" pm.expect(jsonData.token).to.match(tokenRegex);",
" pm.expect(jsonData.tests.include).to.include(\"/\");",
" pm.expect(jsonData.types).to.include(\"automatic\");",
" pm.expect(jsonData.types).to.include(\"manual\");",
" pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");",
" pm.expect(jsonData.timeouts.automatic).to.equal(60000);",
" pm.expect(jsonData.timeouts.manual).to.equal(300000);",
" pm.expect(jsonData.browser.name).to.equal(\"Other\");",
" pm.expect(jsonData.browser.version).to.equal(\"0\");",
" pm.expect(jsonData.is_public).to.equal(false);",
" pm.expect(jsonData.reference_tokens).to.be.empty;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "2873d554-9816-41f0-9051-fb2cb1272a76",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"status\");",
" pm.expect(typeof jsonData.status).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"expiration_date\");",
" pm.expect(jsonData.expiration_date).to.be.null;",
" pm.expect(jsonData).to.have.property(\"date_started\");",
" pm.expect(jsonData.date_started).to.satisfy(value => !value || typeof value === \"number\");",
" pm.expect(jsonData).to.have.property(\"date_finished\");",
" pm.expect(jsonData.date_finished).to.satisfy(value => !value || typeof value === \"number\");",
"});",
"",
"pm.test(\"Session status is pending\", function () {",
" pm.expect(jsonData.status).to.equal(\"pending\");",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "53605764-d4f0-4b32-9a30-67e84dd104d9",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"pm.test(\"All tests are pending tests\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);",
"})",
"",
"console.log(pm.globals.get(\"available_tests\"))",
"const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));",
"",
"pm.test(\"All available tests are part of the session\", function () {",
" for (var api of Object.keys(jsonData.pending_tests)) {",
" for (var test of jsonData.pending_tests[api]) {",
" pm.expect(availableTests[api]).to.include(test);",
" }",
" }",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "cf165ae9-1c44-483c-8fe4-bd7cdaa20710",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "6938d456-afd5-431b-a95f-a2c45a3ac479",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Update With Configuration",
"item": [
{
"name": "Update Session",
"event": [
{
"listen": "test",
"script": {
"id": "657be5b3-4a99-4415-a1ef-9dfdcf541e46",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "093a0019-a84c-44fc-b890-36369d51b7d5",
"exec": [
"var automaticTimeout = 120000;",
"var manualTimeout = 1000000;",
"var specialTimeout = 2000;",
"",
"pm.globals.set(\"automatic_timeout\", automaticTimeout);",
"pm.globals.set(\"manual_timeout\", manualTimeout);",
"pm.globals.set(\"special_timeout\", specialTimeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\",\n \"manual\"\n ],\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n }\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "4ac55601-9bdf-41f8-9d59-ff1ee20fa471",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"tests\");",
" pm.expect(typeof jsonData.tests).to.equal(\"object\");",
" pm.expect(jsonData.tests).to.have.property(\"include\");",
" pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);",
" pm.expect(jsonData.tests).to.have.property(\"exclude\");",
" pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"types\");",
" pm.expect(jsonData.types).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"user_agent\");",
" pm.expect(typeof jsonData.user_agent).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"timeouts\");",
" pm.expect(typeof jsonData.timeouts).to.equal(\"object\")",
" pm.expect(jsonData.timeouts).to.have.property(\"automatic\");",
" pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");",
" pm.expect(jsonData.timeouts).to.have.property(\"manual\");",
" pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");",
" pm.expect(jsonData).to.have.property(\"browser\");",
" pm.expect(typeof jsonData.browser).to.equal(\"object\");",
" pm.expect(jsonData.browser).to.have.property(\"name\");",
" pm.expect(typeof jsonData.browser.name).to.equal(\"string\");",
" pm.expect(jsonData.browser).to.have.property(\"version\");",
" pm.expect(typeof jsonData.browser.version).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"reference_tokens\");",
" pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);",
"});",
"",
"var includedTests = JSON.parse(pm.globals.get(\"included_tests\"));",
"var excludedTests = JSON.parse(pm.globals.get(\"excluded_tests\"));",
"var automaticTimeout = pm.globals.get(\"automatic_timeout\");",
"var manualTimeout = pm.globals.get(\"manual_timeout\");",
"var specialTimeout = pm.globals.get(\"special_timeout\");",
"var specialTimeoutTest = pm.globals.get(\"special_timeout_test\");",
"",
"pm.test(\"Configuration is as specified\", function () {",
" pm.expect(jsonData.token).to.match(tokenRegex);",
" for (var test of includedTests) {",
" pm.expect(jsonData.tests.include).to.include(test);",
" }",
" for (var test of excludedTests) {",
" pm.expect(jsonData.tests.exclude).to.include(test);",
" }",
" pm.expect(jsonData.types).to.include(\"automatic\");",
" pm.expect(jsonData.types).to.include(\"manual\");",
" pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");",
" pm.expect(jsonData.timeouts.automatic).to.equal(automaticTimeout);",
" pm.expect(jsonData.timeouts.manual).to.equal(manualTimeout);",
" pm.expect(jsonData.timeouts[specialTimeoutTest]).to.equal(specialTimeout);",
" pm.expect(jsonData.browser.name).to.equal(\"Other\");",
" pm.expect(jsonData.browser.version).to.equal(\"0\");",
" pm.expect(jsonData.is_public).to.equal(false);",
" pm.expect(jsonData.reference_tokens).to.be.empty;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "0b49c01b-e943-4879-b441-4093836d05e9",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"pm.test(\"All tests are pending tests\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);",
"})",
"",
"const availableTests = pm.globals.get(\"available_tests\");",
"const includedTests = pm.globals.get(\"included_tests\");",
"const excludedTests = pm.globals.get(\"excluded_tests\");",
"",
"pm.test(\"Selected subset of tests are part of the session\", function () {",
" for (var api of Object.keys(jsonData.pending_tests)) {",
" for (var includedTest of includedTests) {",
" if (includedTest.split(\"/\").find(part => !!part) === api) {",
" var includeRegExp = new RegExp(\"^\" + includedTest, \"i\");",
" for (var test of jsonData.pending_tests[api]) {",
" pm.expect(test).to.match(regex);",
" }",
" break;",
" }",
" }",
" for (var excludedTest of excludedTests) {",
" if (excludedTest.split(\"/\").find(part => !!part) === api) {",
" var excludeRegExp = new RegExp(\"^\" + excludedTest, \"i\");",
" for (var test of jsonData.pending_tests[api]) {",
" pm.expect(test).to.not.match(regex);",
" }",
" break;",
" }",
" }",
" }",
"});",
"",
"const sessionTests = jsonData.pending_tests;",
"",
"pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "b9cba19f-88d2-41f6-940a-a0979da05500",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"status\");",
" pm.expect(typeof jsonData.status).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"expiration_date\");",
" pm.expect(jsonData.expiration_date).to.be.null;",
" pm.expect(jsonData).to.have.property(\"date_started\");",
" pm.expect(jsonData.date_started).to.satisfy(value => !value || typeof value === \"number\");",
" pm.expect(jsonData).to.have.property(\"date_finished\");",
" pm.expect(jsonData.date_finished).to.satisfy(value => !value || typeof value === \"number\");",
"});",
"",
"pm.test(\"Session status is pending\", function () {",
" pm.expect(jsonData.status).to.equal(\"pending\");",
"})",
"",
"pm.test(\"Start and Finish date not set\", function () {",
" pm.expect(jsonData.date_started).to.be.null;",
" pm.expect(jsonData.date_finished).to.be.null;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "3669c70a-88bc-4854-abac-5cb80a21c392",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "1a81f5c5-28d8-4935-b8ae-822e33c23da9",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "Update Session Labels",
"item": [
{
"name": "Create Session \\w Configuration Copy",
"event": [
{
"listen": "test",
"script": {
"id": "9de9321c-ae78-4abd-a740-6634e2cbb9b9",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "739284e7-17ac-4c34-baa1-933353eb7ecc",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"labels\": [\"label1\", \"label2\"]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "5b15f338-c773-4f48-8f78-1d7c926beb81",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"tests\");",
" pm.expect(typeof jsonData.tests).to.equal(\"object\");",
" pm.expect(jsonData.tests).to.have.property(\"include\");",
" pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);",
" pm.expect(jsonData.tests).to.have.property(\"exclude\");",
" pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"types\");",
" pm.expect(jsonData.types).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"user_agent\");",
" pm.expect(typeof jsonData.user_agent).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"timeouts\");",
" pm.expect(typeof jsonData.timeouts).to.equal(\"object\")",
" pm.expect(jsonData.timeouts).to.have.property(\"automatic\");",
" pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");",
" pm.expect(jsonData.timeouts).to.have.property(\"manual\");",
" pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");",
" pm.expect(jsonData).to.have.property(\"browser\");",
" pm.expect(typeof jsonData.browser).to.equal(\"object\");",
" pm.expect(jsonData.browser).to.have.property(\"name\");",
" pm.expect(typeof jsonData.browser.name).to.equal(\"string\");",
" pm.expect(jsonData.browser).to.have.property(\"version\");",
" pm.expect(typeof jsonData.browser.version).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"reference_tokens\");",
" pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"labels\");",
" pm.expect(jsonData.labels).to.be.an.instanceof(Array);",
"});",
"",
"pm.test(\"Configuration is default\", function () {",
" pm.expect(jsonData.token).to.match(tokenRegex);",
" pm.expect(jsonData.tests.include).to.include(\"/\");",
" pm.expect(jsonData.types).to.include(\"automatic\");",
" pm.expect(jsonData.types).to.include(\"manual\");",
" pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");",
" pm.expect(jsonData.timeouts.automatic).to.equal(60000);",
" pm.expect(jsonData.timeouts.manual).to.equal(300000);",
" pm.expect(jsonData.browser.name).to.equal(\"Other\");",
" pm.expect(jsonData.browser.version).to.equal(\"0\");",
" pm.expect(jsonData.is_public).to.equal(false);",
" pm.expect(jsonData.reference_tokens).to.be.empty;",
" pm.expect(jsonData.labels).to.include(\"label1\");",
" pm.expect(jsonData.labels).to.include(\"label2\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Update Labels Copy",
"event": [
{
"listen": "test",
"script": {
"id": "e69b7188-b3c9-4f66-8c6c-3f3348f84f6a",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"labels\": [\"new\", \"labels\"]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/labels",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"labels"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "86e20c4d-5797-4b6e-a8cc-14e284e7c491",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"tests\");",
" pm.expect(typeof jsonData.tests).to.equal(\"object\");",
" pm.expect(jsonData.tests).to.have.property(\"include\");",
" pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);",
" pm.expect(jsonData.tests).to.have.property(\"exclude\");",
" pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"types\");",
" pm.expect(jsonData.types).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"user_agent\");",
" pm.expect(typeof jsonData.user_agent).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"timeouts\");",
" pm.expect(typeof jsonData.timeouts).to.equal(\"object\")",
" pm.expect(jsonData.timeouts).to.have.property(\"automatic\");",
" pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");",
" pm.expect(jsonData.timeouts).to.have.property(\"manual\");",
" pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");",
" pm.expect(jsonData).to.have.property(\"browser\");",
" pm.expect(typeof jsonData.browser).to.equal(\"object\");",
" pm.expect(jsonData.browser).to.have.property(\"name\");",
" pm.expect(typeof jsonData.browser.name).to.equal(\"string\");",
" pm.expect(jsonData.browser).to.have.property(\"version\");",
" pm.expect(typeof jsonData.browser.version).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"reference_tokens\");",
" pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"labels\");",
" pm.expect(jsonData.labels).to.be.an.instanceof(Array);",
"});",
"",
"pm.test(\"Configuration is default\", function () {",
" pm.expect(jsonData.token).to.match(tokenRegex);",
" pm.expect(jsonData.tests.include).to.include(\"/\");",
" pm.expect(jsonData.types).to.include(\"automatic\");",
" pm.expect(jsonData.types).to.include(\"manual\");",
" pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");",
" pm.expect(jsonData.timeouts.automatic).to.equal(60000);",
" pm.expect(jsonData.timeouts.manual).to.equal(300000);",
" pm.expect(jsonData.browser.name).to.equal(\"Other\");",
" pm.expect(jsonData.browser.version).to.equal(\"0\");",
" pm.expect(jsonData.is_public).to.equal(false);",
" pm.expect(jsonData.reference_tokens).to.be.empty;",
" pm.expect(jsonData.labels).to.include(\"new\");",
" pm.expect(jsonData.labels).to.include(\"labels\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Clean Up",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Delete Session",
"item": [
{
"name": "Setup",
"item": [
{
"name": "Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "e85fd539-4598-47a9-8768-656656f29fec",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Delete Session",
"event": [
{
"listen": "test",
"script": {
"id": "8e9fe4af-0d50-49eb-8a4a-00e13021b4a6",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "9418112a-03f6-4641-893e-076c8922c0af",
"exec": [
"pm.test(\"Status code is 404\", function () {",
" pm.response.to.have.status(404);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Create and Read Results",
"item": [
{
"name": "Create Session",
"item": [
{
"name": "Create Session Two Tests",
"event": [
{
"listen": "test",
"script": {
"id": "a6995ff1-d626-4f4f-a1e0-567f3429bf52",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "85c7ad8d-5fc9-403d-8715-c65d5ff1323e",
"exec": [
"const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));",
"const keys = Object.keys(availableTests).sort();",
"const test1 = availableTests[keys[0]][0];",
"const test2 = availableTests[keys[1]][0];",
"",
"console.log(test1, test2)",
"",
"pm.globals.set(\"single_test_1\", test1);",
"pm.globals.set(\"single_test_2\", test2);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\", \"{{single_test_2}}\"]\n }\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "35cf4745-0301-4c9c-b6b3-40945299533f",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Results",
"event": [
{
"listen": "test",
"script": {
"id": "6dc082ef-80ff-407a-a562-e25e37476eee",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Responds with no results\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(typeof jsonData).to.equal(\"object\");",
" pm.expect(Object.keys(jsonData)).to.be.empty;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
],
"query": [
{
"key": "path",
"value": "/2dcontext/drawing-images-to-the-canvas",
"disabled": true
},
{
"key": "path",
"value": "/2dcontext/conformance-requirements",
"disabled": true
},
{
"key": "path",
"value": "/2dcontext/conformance-requirements/2d.missingargs.html",
"disabled": true
}
]
}
},
"response": []
},
{
"name": "Read Results Compact",
"event": [
{
"listen": "test",
"script": {
"id": "fcade663-dbd8-42c9-8344-53ae1feb6fcb",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var singleTest1 = pm.globals.get(\"single_test_1\");",
"var singleTest2 = pm.globals.get(\"single_test_2\");",
"",
"var api1 = singleTest1.split(\"/\").find(part => !!part);",
"var api2 = singleTest2.split(\"/\").find(part => !!part);",
"",
"pm.test(\"Responds with no results\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(typeof jsonData).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(api1);",
" pm.expect(jsonData).to.have.property(api2);",
" pm.expect(jsonData[api1].complete).to.equal(0);",
" pm.expect(jsonData[api2].complete).to.equal(0);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"compact"
]
}
},
"response": []
},
{
"name": "Read Last Completed Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "36d70d08-3caa-4312-9bbd-aed15fd238dd",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
" ",
"pm.test(\"JSON format is as expected\", function () {",
" pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);",
" pm.expect(jsonData).to.have.property(\"pass\");",
" pm.expect(jsonData).to.have.property(\"fail\");",
" pm.expect(jsonData).to.have.property(\"timeout\");",
" for (var key of Object.keys(jsonData)) {",
" pm.expect(jsonData[key]).to.be.an.instanceof(Array);",
" }",
"});",
"",
"pm.test(\"Responds with no last completed tests\", function () {",
" for (var key of Object.keys(jsonData)) {",
" pm.expect(jsonData[key]).to.be.empty;",
" }",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"last_completed"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "211adcf7-d71a-4b0f-94ab-d285fc8367df",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"const sessionTests = jsonData.pending_tests;",
"",
"pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Create First Result",
"item": [
{
"name": "Read Next Test of Session",
"event": [
{
"listen": "test",
"script": {
"id": "5410c9c2-ebbe-4bc1-ac12-e2602d8ade57",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(Object.keys(response)).to.have.lengthOf(1);",
" pm.expect(response).to.have.property(\"next_test\");",
" pm.expect(typeof response.next_test).to.equal(\"string\");",
"});",
"",
"const nextTest = response.next_test;",
"pm.globals.set(\"current_test_url\", nextTest);",
"if (!nextTest) return;",
"",
"const parameters = nextTest.split(\"?\")[1].split(\"&\");",
"let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];",
"test = decodeURIComponent(test);",
"test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"pm.globals.set(\"current_test\", test);",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"",
"pm.test(\"Returned test is first of two specified tests\", function () {",
" console.log(test);",
" console.log(test1);",
" console.log(pm.globals.get(\"single_test_2\"))",
" pm.expect(test).to.equal(test1);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "e4f9a03f-c731-4192-a9a9-aa9e315c3c44",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"pm.test(\"One test is pending, one test is running\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(1);",
" var api = Object.keys(jsonData.pending_tests)[0];",
" pm.expect(jsonData.pending_tests[api]).to.have.lengthOf(1);",
" pm.expect(jsonData.pending_tests[api]).to.include(test2);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(1);",
" api = Object.keys(jsonData.running_tests)[0];",
" pm.expect(jsonData.running_tests[api]).to.have.lengthOf(1);",
" pm.expect(jsonData.running_tests[api]).to.include(test1);",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Create Result",
"event": [
{
"listen": "test",
"script": {
"id": "9f684f77-4ed0-4cd2-99a4-b1c134432e9f",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "33601dd0-6786-4c8a-a6b5-7f1386129de7",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"pm.test(\"One test is pending, one test is completed\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(1);",
" var api = Object.keys(jsonData.pending_tests)[0];",
" pm.expect(jsonData.pending_tests[api]).to.have.lengthOf(1);",
" pm.expect(jsonData.pending_tests[api]).to.include(test2);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "97be92f1-a8d1-41ea-b41d-0ca08113e6e1",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"status\");",
" pm.expect(typeof jsonData.status).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"expiration_date\");",
" pm.expect(jsonData.expiration_date).to.be.null;",
" pm.expect(jsonData).to.have.property(\"date_started\");",
" pm.expect(jsonData).to.have.property(\"date_finished\");",
"});",
"",
"pm.test(\"Session status is running\", function () {",
" pm.expect(jsonData.status).to.equal(\"running\");",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Read Last Completed Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "24ec2b79-c266-473f-8579-7b694079d640",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
" ",
"pm.test(\"JSON format is as expected\", function () {",
" pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);",
" pm.expect(jsonData).to.have.property(\"pass\");",
" pm.expect(jsonData).to.have.property(\"fail\");",
" pm.expect(jsonData).to.have.property(\"timeout\");",
" for (var key of Object.keys(jsonData)) {",
" pm.expect(jsonData[key]).to.be.an.instanceof(Array);",
" }",
"});",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"",
"pm.test(\"Responds with one last completed tests as failed\", function () {",
" pm.expect(jsonData[\"pass\"]).to.be.empty;",
" pm.expect(jsonData[\"fail\"]).to.have.lengthOf(1);",
" pm.expect(jsonData[\"fail\"][0]).to.equal(test1);",
" pm.expect(jsonData[\"timeout\"]).to.be.empty;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"last_completed"
]
}
},
"response": []
},
{
"name": "Read Results",
"event": [
{
"listen": "test",
"script": {
"id": "1f47b39f-727f-43b4-934d-c7f62b268baa",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON format is as expected\", function () {",
" for (var api of Object.keys(jsonData)) {",
" pm.expect(jsonData[api]).to.be.an.instanceof(Array);",
" for (var result of jsonData[api]) {",
" pm.expect(typeof result).to.equal(\"object\");",
" pm.expect(Object.keys(result)).to.have.lengthOf(4);",
" pm.expect(result).to.have.property(\"test\");",
" pm.expect(typeof result.test).to.equal(\"string\");",
" pm.expect(result).to.have.property(\"status\");",
" pm.expect(typeof result.status).to.equal(\"string\");",
" pm.expect(result).to.have.property(\"message\");",
" pm.expect(result.message).to.satisfy(message => !message || typeof message === \"string\");",
" pm.expect(result).to.have.property(\"subtests\");",
" pm.expect(result.subtests).to.be.an.instanceof(Array);",
" for (var subtest of result.subtests) {",
" pm.expect(typeof subtest).to.equal(\"object\");",
" pm.expect(Object.keys(subtest)).to.have.lengthOf(3);",
" pm.expect(subtest).to.have.property(\"name\");",
" pm.expect(typeof subtest.name).to.equal(\"string\");",
" pm.expect(subtest).to.have.property(\"status\");",
" pm.expect(typeof subtest.status).to.equal(\"string\");",
" pm.expect(subtest).to.have.property(\"message\");",
" pm.expect(subtest.message).to.satisfy(message => !message || typeof message === \"string\");",
" }",
" }",
" }",
"});",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"",
"pm.test(\"Test is first test, successful run and failed\", function () {",
" var api = Object.keys(jsonData)[0];",
" pm.expect(api).to.equal(test1.split(\"/\").find(part => !!part))",
" var result = jsonData[api][0];",
" pm.expect(result.test).to.equal(test1);",
" pm.expect(result.status).to.equal(\"OK\");",
" pm.expect(result.message).to.be.null;",
" var subtest = result.subtests[0];",
" pm.expect(subtest.status).to.equal(\"FAIL\");",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
],
"query": [
{
"key": "path",
"value": "/2dcontext/drawing-images-to-the-canvas",
"disabled": true
},
{
"key": "path",
"value": "/2dcontext/conformance-requirements",
"disabled": true
},
{
"key": "path",
"value": "/2dcontext/conformance-requirements/2d.missingargs.html",
"disabled": true
}
]
}
},
"response": []
},
{
"name": "Read Results Compact",
"event": [
{
"listen": "test",
"script": {
"id": "e734f074-a0c2-4e54-b427-2827fa732843",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"var test = pm.globals.get(\"single_test_1\");",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(typeof jsonData).to.equal(\"object\");",
" for (var api of Object.keys(jsonData)) {",
" pm.expect(jsonData[api]).to.have.property(\"pass\");",
" pm.expect(typeof jsonData[api].pass).to.equal(\"number\");",
" pm.expect(jsonData[api]).to.have.property(\"fail\");",
" pm.expect(typeof jsonData[api].fail).to.equal(\"number\");",
" pm.expect(jsonData[api]).to.have.property(\"timeout\");",
" pm.expect(typeof jsonData[api].timeout).to.equal(\"number\");",
" pm.expect(jsonData[api]).to.have.property(\"not_run\");",
" pm.expect(typeof jsonData[api].not_run).to.equal(\"number\");",
" }",
"})",
"",
"pm.test(\"Responds with one test failed\", function () {",
" var api = test.split(\"/\").find(part => !!part);",
" pm.expect(jsonData[api].pass).to.equal(0);",
" pm.expect(jsonData[api].fail).to.equal(1);",
" pm.expect(jsonData[api].timeout).to.equal(0);",
" pm.expect(jsonData[api].not_run).to.equal(0);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"compact"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Create Last Result",
"item": [
{
"name": "Read Next Test of Session",
"event": [
{
"listen": "test",
"script": {
"id": "fd2c11ee-5eca-43f3-89a7-133602c8034a",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(Object.keys(response)).to.have.lengthOf(1);",
" pm.expect(response).to.have.property(\"next_test\");",
" pm.expect(typeof response.next_test).to.equal(\"string\");",
"});",
"",
"const nextTest = response.next_test;",
"pm.globals.set(\"current_test_url\", nextTest);",
"if (!nextTest) return;",
"",
"const parameters = nextTest.split(\"?\")[1].split(\"&\");",
"let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];",
"test = decodeURIComponent(test);",
"test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"pm.globals.set(\"current_test\", test);",
"",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"pm.test(\"Returned test is second of two specified tests\", function () {",
" pm.expect(test).to.equal(test2);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "112ee3d5-d4e0-4838-879e-f74c38d0218c",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"pm.test(\"One test is running\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(0);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(1);",
" var api = Object.keys(jsonData.running_tests)[0];",
" pm.expect(jsonData.running_tests[api]).to.have.lengthOf(1);",
" pm.expect(jsonData.running_tests[api]).to.include(test2);",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Create Result",
"event": [
{
"listen": "test",
"script": {
"id": "79a84ed9-bb07-493d-ab34-8e7693b3ebbd",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"PASS\",\n \"message\": \"Error message\"\n }\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "c1829043-18dd-4cc1-8091-41981349f4e3",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"status\");",
" pm.expect(typeof jsonData.status).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"expiration_date\");",
" pm.expect(jsonData.expiration_date).to.be.null;",
" pm.expect(jsonData).to.have.property(\"date_started\");",
" pm.expect(jsonData).to.have.property(\"date_finished\");",
"});",
"",
"pm.test(\"Session status is completed\", function () {",
" pm.expect(jsonData.status).to.equal(\"completed\");",
"})",
"",
"pm.test(\"Finish date is set\", function () {",
" pm.expect(Date.parse(jsonData.date_finished)).to.be.below(Date.now());",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "59fee9df-9945-4fdf-a102-9c1b92d915c1",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"var test1Api = test1.split(\"/\").find(part => !!part);",
"var test2Api = test1.split(\"/\").find(part => !!part);",
"",
"pm.test(\"One test is pending, one test is completed\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(0);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Last Completed Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "91fa38ac-3b06-488a-892e-59458e88a4da",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
" ",
"pm.test(\"JSON format is as expected\", function () {",
" pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);",
" pm.expect(jsonData).to.have.property(\"pass\");",
" pm.expect(jsonData).to.have.property(\"fail\");",
" pm.expect(jsonData).to.have.property(\"timeout\");",
" for (var key of Object.keys(jsonData)) {",
" pm.expect(jsonData[key]).to.be.an.instanceof(Array);",
" }",
"});",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"pm.test(\"Responds with one last completed tests as failed and one last completed test as passed\", function () {",
" pm.expect(jsonData[\"pass\"]).to.have.lengthOf(1);",
" pm.expect(jsonData[\"pass\"][0]).to.equal(test2);",
" pm.expect(jsonData[\"fail\"]).to.have.lengthOf(1);",
" pm.expect(jsonData[\"fail\"][0]).to.equal(test1);",
" pm.expect(jsonData[\"timeout\"]).to.be.empty;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"last_completed"
]
}
},
"response": []
},
{
"name": "Read Results",
"event": [
{
"listen": "test",
"script": {
"id": "dca0b42e-9054-4354-87e5-e8d236216050",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON format is as expected\", function () {",
" for (var api of Object.keys(jsonData)) {",
" pm.expect(jsonData[api]).to.be.an.instanceof(Array);",
" for (var result of jsonData[api]) {",
" pm.expect(typeof result).to.equal(\"object\");",
" pm.expect(Object.keys(result)).to.have.lengthOf(4);",
" pm.expect(result).to.have.property(\"test\");",
" pm.expect(typeof result.test).to.equal(\"string\");",
" pm.expect(result).to.have.property(\"status\");",
" pm.expect(typeof result.status).to.equal(\"string\");",
" pm.expect(result).to.have.property(\"message\");",
" pm.expect(result.message).to.satisfy(message => !message || typeof message === \"string\");",
" pm.expect(result).to.have.property(\"subtests\");",
" pm.expect(result.subtests).to.be.an.instanceof(Array);",
" for (var subtest of result.subtests) {",
" pm.expect(typeof subtest).to.equal(\"object\");",
" pm.expect(Object.keys(subtest)).to.have.lengthOf(3);",
" pm.expect(subtest).to.have.property(\"name\");",
" pm.expect(typeof subtest.name).to.equal(\"string\");",
" pm.expect(subtest).to.have.property(\"status\");",
" pm.expect(typeof subtest.status).to.equal(\"string\");",
" pm.expect(subtest).to.have.property(\"message\");",
" pm.expect(subtest.message).to.satisfy(message => !message || typeof message === \"string\");",
" }",
" }",
" }",
"});",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"pm.test(\"Test is first and second test, successful run and failed, and successful run and passed\", function () {",
" var api = Object.keys(jsonData)[0];",
" for (var result of jsonData[api]) {",
" if (result.test === test1) {",
" pm.expect(result.test).to.equal(test1); ",
" pm.expect(result.status).to.equal(\"OK\");",
" pm.expect(result.message).to.be.null;",
" var subtest = result.subtests[0];",
" pm.expect(subtest.status).to.equal(\"FAIL\");",
" } else {",
" pm.expect(result.test).to.equal(test2); ",
" pm.expect(result.status).to.equal(\"OK\");",
" pm.expect(result.message).to.be.null;",
" subtest = result.subtests[0];",
" pm.expect(subtest.status).to.equal(\"PASS\");",
" }",
" }",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
],
"query": [
{
"key": "path",
"value": "/2dcontext/drawing-images-to-the-canvas",
"disabled": true
},
{
"key": "path",
"value": "/2dcontext/conformance-requirements",
"disabled": true
},
{
"key": "path",
"value": "/2dcontext/conformance-requirements/2d.missingargs.html",
"disabled": true
}
]
}
},
"response": []
},
{
"name": "Read Results Compact",
"event": [
{
"listen": "test",
"script": {
"id": "14ec9254-5a40-4c86-9a7f-72f43a35a79b",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(typeof jsonData).to.equal(\"object\");",
" for (var api of Object.keys(jsonData)) {",
" pm.expect(jsonData[api]).to.have.property(\"pass\");",
" pm.expect(typeof jsonData[api].pass).to.equal(\"number\");",
" pm.expect(jsonData[api]).to.have.property(\"fail\");",
" pm.expect(typeof jsonData[api].fail).to.equal(\"number\");",
" pm.expect(jsonData[api]).to.have.property(\"timeout\");",
" pm.expect(typeof jsonData[api].timeout).to.equal(\"number\");",
" pm.expect(jsonData[api]).to.have.property(\"not_run\");",
" pm.expect(typeof jsonData[api].not_run).to.equal(\"number\");",
" }",
"})",
"",
"const test1 = pm.globals.get(\"single_test_1\");",
"const test2 = pm.globals.get(\"single_test_2\");",
"",
"var test1Api = test1.split(\"/\").find(part => !!part);",
"var test2Api = test1.split(\"/\").find(part => !!part);",
"",
"pm.test(\"Responds with one test failed\", function () {",
" pm.expect(Object.keys(jsonData)).to.have.lengthOf(2);",
" var api = Object.keys(jsonData)[0];",
" if (api === test1Api) {",
" pm.expect(jsonData[api].pass).to.equal(0);",
" pm.expect(jsonData[api].fail).to.equal(1);",
" } else {",
" pm.expect(jsonData[api].pass).to.equal(1);",
" pm.expect(jsonData[api].fail).to.equal(0);",
" }",
" pm.expect(jsonData[api].timeout).to.equal(0);",
" pm.expect(jsonData[api].not_run).to.equal(0);",
" api = Object.keys(jsonData)[1];",
" if (api === test1Api) {",
" pm.expect(jsonData[api].pass).to.equal(0);",
" pm.expect(jsonData[api].fail).to.equal(1);",
" } else {",
" pm.expect(jsonData[api].pass).to.equal(1);",
" pm.expect(jsonData[api].fail).to.equal(0);",
" }",
" pm.expect(jsonData[api].timeout).to.equal(0);",
" pm.expect(jsonData[api].not_run).to.equal(0);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"compact"
]
}
},
"response": []
},
{
"name": "Read Next Test of Session",
"event": [
{
"listen": "test",
"script": {
"id": "132574dc-3688-47e3-8f50-3235f18806f7",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(Object.keys(response)).to.have.lengthOf(1);",
" pm.expect(response).to.have.property(\"next_test\");",
" pm.expect(typeof response.next_test).to.equal(\"string\");",
"});",
"",
"const nextTest = response.next_test;",
"pm.globals.set(\"current_test_url\", nextTest);",
"if (!nextTest) return;",
"const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"pm.globals.set(\"current_test\", test);",
"",
"const web_root = pm.environment.get(\"web_root\");",
"",
"pm.test(\"Returned test finish page\", function () {",
" pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Clean Up",
"item": [
{
"name": "Delete Session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "Viewing and Downloading Reports",
"item": [
{
"name": "Create Sessions",
"item": [
{
"name": "First Session",
"item": [
{
"name": "Create Session One Tests",
"event": [
{
"listen": "test",
"script": {
"id": "2f233dcf-d934-4479-8908-b1349e6ea54d",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "2930a821-2c6e-47b9-89d9-90ebe1cff52a",
"exec": [
"const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));",
"const keys = Object.keys(availableTests).sort();",
"const test1 = availableTests[keys[0]][0];",
"const test2 = availableTests[keys[1]][0];",
"const apiName = test1.split(\"/\").find(part => !!part);",
"",
"pm.globals.set(\"single_test_1\", test1);",
"pm.globals.set(\"single_test_2\", test2);",
"pm.globals.set(\"api_name\", apiName);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n }\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "12f3616b-707e-4a71-8db8-89fc195c1fcd",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Next Test of Session",
"event": [
{
"listen": "test",
"script": {
"id": "f35f1509-383f-49af-a30e-41e1df4efa04",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"",
"const nextTest = response.next_test;",
"pm.globals.set(\"current_test_url\", nextTest);",
"if (!nextTest) return;",
"",
"const parameters = nextTest.split(\"?\")[1].split(\"&\");",
"let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];",
"test = decodeURIComponent(test);",
"test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"pm.globals.set(\"current_test\", test);",
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Create Result",
"event": [
{
"listen": "test",
"script": {
"id": "b015f161-e390-4224-9f26-92395f44c772",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Second Session",
"item": [
{
"name": "Create Session One Tests",
"event": [
{
"listen": "test",
"script": {
"id": "da3d0c17-6b2b-4d61-ad01-dba736425388",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token_comp\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "7da81e81-d344-4459-b700-19b93d49d3c9",
"exec": [
"const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));",
"const keys = Object.keys(availableTests).sort();",
"const test1 = availableTests[keys[0]][0];",
"",
"pm.globals.set(\"single_test_1\", test1);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n }\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "3296c7ba-67a6-405d-a78a-51dd64432301",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token_comp}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token_comp}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Next Test of Session",
"event": [
{
"listen": "test",
"script": {
"id": "72deb55c-4583-4741-9cf8-97713762b894",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"",
"const nextTest = response.next_test;",
"pm.globals.set(\"current_test_url\", nextTest);",
"if (!nextTest) return;",
"",
"const parameters = nextTest.split(\"?\")[1].split(\"&\");",
"let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];",
"test = decodeURIComponent(test);",
"test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"pm.globals.set(\"current_test\", test);",
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token_comp}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token_comp}}",
"next"
]
}
},
"response": []
},
{
"name": "Create Result",
"event": [
{
"listen": "test",
"script": {
"id": "d695f300-a773-4654-b346-95c536cad19e",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token_comp}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token_comp}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Download reports",
"item": [
{
"name": "Download Results Overview",
"event": [
{
"listen": "test",
"script": {
"id": "6838965f-7a27-48d5-8c27-f55d4756588f",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/overview",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"overview"
]
}
},
"response": []
},
{
"name": "Download All Apis Json",
"event": [
{
"listen": "test",
"script": {
"id": "bcc2c8c4-94c0-4227-a627-3e0d5be2e7b8",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/json",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"json"
]
}
},
"response": []
},
{
"name": "Download WPT Multi Report Url",
"event": [
{
"listen": "test",
"script": {
"id": "7b370723-0506-4b5e-941a-f31a628a29f6",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Uri returned\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(typeof jsonData.uri).to.equal(\"string\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{api_name}}/reporturl?tokens={{session_token}},{{session_token_comp}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{api_name}}",
"reporturl"
],
"query": [
{
"key": "tokens",
"value": "{{session_token}},{{session_token_comp}}"
}
]
}
},
"response": []
},
{
"name": "Download Results Api Json",
"event": [
{
"listen": "test",
"script": {
"id": "b5243979-b63a-4bbf-bd51-1529da1e1f6d",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "81f3da29-8a0c-4403-929d-86590b01ef2f",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"{{api_name}}",
"json"
]
}
},
"response": []
},
{
"name": "Download WPT Report Copy",
"event": [
{
"listen": "test",
"script": {
"id": "0168ea3f-9bf7-4ea7-a3ad-745c2704d97e",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Uri returned\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(typeof jsonData.uri).to.equal(\"string\");",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "e4efdac9-2d00-4853-b145-18a6d44ff139",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/reporturl",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"{{api_name}}",
"reporturl"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "Malfunctioning List",
"item": [
{
"name": "Create Session \\w Configuration Copy",
"event": [
{
"listen": "test",
"script": {
"id": "e685a989-8ef7-4e8f-a3c7-b579c66430f9",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "8517360b-2e66-4ca9-9339-017622c39888",
"exec": [
"var automaticTimeout = 120000;",
"var manualTimeout = 1000000;",
"var specialTimeout = 2000;",
"",
"pm.globals.set(\"automatic_timeout\", automaticTimeout);",
"pm.globals.set(\"manual_timeout\", manualTimeout);",
"pm.globals.set(\"special_timeout\", specialTimeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\"\n ],\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n },\n \"labels\": [\"label1\", \"label2\"]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Malfunctioning Empty",
"event": [
{
"listen": "test",
"script": {
"id": "4e85ecaf-4364-4681-ab8a-221d40681c44",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"Return empty array\", function() {",
" pm.expect(jsonData).to.be.an.instanceof(Array)",
" pm.expect(jsonData).to.have.length(0)",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"malfunctioning"
]
}
},
"response": []
},
{
"name": "Update Session Malfunctioning Insert Two",
"event": [
{
"listen": "test",
"script": {
"id": "a6221560-9eba-4fb4-a7cb-a1570a37425d",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "[\n\t\"/test/file/one.html\",\n\t\"/test/file/two.html\"\n]",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"malfunctioning"
]
}
},
"response": []
},
{
"name": "Read Session Malfunctioning Two Tests",
"event": [
{
"listen": "test",
"script": {
"id": "77d14567-4600-44fd-98e4-99e113da6781",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"Return array with two tests\", function() {",
" pm.expect(jsonData).to.be.an.instanceof(Array)",
" pm.expect(jsonData).to.have.length(2)",
" pm.expect(jsonData).to.include(\"/test/file/one.html\")",
" pm.expect(jsonData).to.include(\"/test/file/two.html\")",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"malfunctioning"
]
}
},
"response": []
},
{
"name": "Update Session Malfunctioning Empty Array",
"event": [
{
"listen": "test",
"script": {
"id": "55b486da-c5ae-49d4-b11a-247387267c9a",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "[]",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"malfunctioning"
]
}
},
"response": []
},
{
"name": "Read Session Malfunctioning Empty",
"event": [
{
"listen": "test",
"script": {
"id": "953002ec-d8df-477a-a0dc-f4e4a2efd031",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"Return empty array\", function() {",
" pm.expect(jsonData).to.be.an.instanceof(Array)",
" pm.expect(jsonData).to.have.length(0)",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"malfunctioning"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {}
},
{
"name": "Sessions API",
"item": [
{
"name": "create session",
"item": [
{
"name": "With Defaults",
"item": [
{
"name": "Prep: Read Available Tests",
"event": [
{
"listen": "test",
"script": {
"id": "fc15d329-d132-4abf-90e4-f549eee99b60",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var availableTests = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(typeof availableTests).to.equal(\"object\");",
" for (var api of Object.keys(availableTests)) {",
" pm.expect(availableTests[api]).to.be.an.instanceof(Array);",
" var apiRegExp = new RegExp(\"^/\" + api, \"i\");",
" for (var test of availableTests[api]) {",
" pm.expect(test).to.match(apiRegExp);",
" }",
" }",
"});",
"",
"var includedTests = [];",
"var excludedTests = [];",
"var specialTimeoutTest = \"\";",
"",
"var apis = Object.keys(availableTests);",
"for(var api of apis) {",
" if (availableTests[api].length > 50) {",
" var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);",
" if (subDirs.length > 2) {",
" includedTests.push(\"/\" + api);",
" excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);",
" specialTimeoutTest = availableTests[api][availableTests[api].length - 1];",
" break;",
" }",
" ",
" }",
"}",
"",
"pm.globals.set(\"available_tests\", availableTests);",
"pm.globals.set(\"included_tests\", JSON.stringify(includedTests));",
"pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));",
"pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests"
]
}
},
"response": []
},
{
"name": "Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "ebb192ce-48e5-4aac-b99d-68894378eac8",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "159976cd-de00-4f88-8f9f-47db13ca4a30",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Configuration is default\", function () {",
" pm.expect(jsonData.token).to.match(tokenRegex);",
" pm.expect(jsonData.tests.include).to.include(\"/\");",
" pm.expect(jsonData.types).to.include(\"automatic\");",
" pm.expect(jsonData.types).to.include(\"manual\");",
" pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");",
" pm.expect(jsonData.timeouts.automatic).to.equal(60000);",
" pm.expect(jsonData.timeouts.manual).to.equal(300000);",
" pm.expect(jsonData.browser.name).to.equal(\"Other\");",
" pm.expect(jsonData.browser.version).to.equal(\"0\");",
" pm.expect(jsonData.is_public).to.equal(false);",
" pm.expect(jsonData.reference_tokens).to.be.empty;",
" pm.expect(jsonData.labels).to.be.empty;",
" pm.expect(new Date(jsonData.date_created).getTime()).to.be.below(Date.now());",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "5058b07b-5e55-44e0-ad88-5c7b5884fa3c",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"Session status is pending\", function () {",
" pm.expect(jsonData.status).to.equal(\"pending\");",
"})",
"",
"pm.test(\"Start, Finish and Expiration date not set\", function () {",
" pm.expect(jsonData.date_started).to.be.null;",
" pm.expect(jsonData.date_finished).to.be.null;",
" pm.expect(jsonData.expiration_date).to.be.null;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "62a8c853-bf0b-47b0-9cee-7611d2b48cde",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"pending_tests\");",
" pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");",
" pm.expect(jsonData).to.have.property(\"running_tests\");",
" pm.expect(typeof jsonData.running_tests).to.equal(\"object\");",
"});",
"",
"pm.test(\"All tests are pending tests\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);",
"})",
"",
"const availableTests = pm.globals.get(\"available_tests\");",
"",
"pm.test(\"All available tests are part of the session\", function () {",
" for (var api of Object.keys(jsonData.pending_tests)) {",
" for (var test of jsonData.pending_tests[api]) {",
" pm.expect(availableTests[api]).to.include(test);",
" }",
" }",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Clean up: Delete session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "878420c3-575a-4194-9a72-cebe07823674",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "6672030f-5a8a-4bea-9792-c24b980392e9",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "With Configuration",
"item": [
{
"name": "Prep: Read Available Tests",
"event": [
{
"listen": "test",
"script": {
"id": "504b76ca-6870-443c-8c33-0cccc52cddae",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var availableTests = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(typeof availableTests).to.equal(\"object\");",
" for (var api of Object.keys(availableTests)) {",
" pm.expect(availableTests[api]).to.be.an.instanceof(Array);",
" var apiRegExp = new RegExp(\"^/\" + api, \"i\");",
" for (var test of availableTests[api]) {",
" pm.expect(test).to.match(apiRegExp);",
" }",
" }",
"});",
"",
"var includedTests = [];",
"var excludedTests = [];",
"var specialTimeoutTest = \"\";",
"",
"var apis = Object.keys(availableTests).sort();",
"for(var api of apis) {",
" if (availableTests[api].length > 50) {",
" var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);",
" if (subDirs.length > 2) {",
" includedTests.push(\"/\" + api);",
" excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);",
" specialTimeoutTest = availableTests[api][availableTests[api].length - 1];",
" break;",
" }",
" ",
" }",
"}",
"",
"pm.globals.set(\"available_tests\", availableTests);",
"pm.globals.set(\"included_tests\", JSON.stringify(includedTests));",
"pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));",
"pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests"
]
}
},
"response": []
},
{
"name": "Create Session \\w Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "fa956871-503a-421c-9822-4e2a11e1cf1c",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "213bdf59-9f98-4b5e-bacc-ae3cb31ae26a",
"exec": [
"var automaticTimeout = 120000;",
"var manualTimeout = 1000000;",
"var specialTimeout = 2000;",
"",
"pm.globals.set(\"automatic_timeout\", automaticTimeout);",
"pm.globals.set(\"manual_timeout\", manualTimeout);",
"pm.globals.set(\"special_timeout\", specialTimeout);",
"",
"const availableTests = pm.globals.get(\"available_tests\");",
"const apiNames = Object.keys(availableTests).sort();",
"const apiName = apiNames[0];",
"",
"pm.globals.set(\"api_name\", apiName);",
"pm.globals.set(\"special_timeout_test\", \"/\" + apiName);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": [\"/{{api_name}}\"]\n },\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n },\n \"labels\": [\"label1\", \"label2\"]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "a0434a56-04b8-4987-8f44-2d71b440ef03",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"var includedTests = JSON.parse(pm.globals.get(\"included_tests\"));",
"var excludedTests = JSON.parse(pm.globals.get(\"excluded_tests\"));",
"var automaticTimeout = pm.globals.get(\"automatic_timeout\");",
"var manualTimeout = pm.globals.get(\"manual_timeout\");",
"var specialTimeout = pm.globals.get(\"special_timeout\");",
"var specialTimeoutTest = pm.globals.get(\"special_timeout_test\");",
"",
"pm.test(\"Configuration is as specified\", function () {",
" pm.expect(jsonData.token).to.match(tokenRegex);",
" for (var test of includedTests) {",
" pm.expect(jsonData.tests.include).to.include(test);",
" }",
" for (var test of excludedTests) {",
" pm.expect(jsonData.tests.exclude).to.include(test);",
" }",
" pm.expect(jsonData.types).to.include(\"automatic\");",
" pm.expect(jsonData.types).to.include(\"manual\");",
" pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");",
" pm.expect(jsonData.timeouts.automatic).to.equal(automaticTimeout);",
" pm.expect(jsonData.timeouts.manual).to.equal(manualTimeout);",
" pm.expect(jsonData.timeouts[specialTimeoutTest]).to.equal(specialTimeout);",
" pm.expect(jsonData.browser.name).to.equal(\"Other\");",
" pm.expect(jsonData.browser.version).to.equal(\"0\");",
" pm.expect(jsonData.is_public).to.equal(false);",
" pm.expect(jsonData.reference_tokens).to.be.empty;",
" pm.expect(jsonData.labels).to.include(\"label1\");",
" pm.expect(jsonData.labels).to.include(\"label2\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "2a7524e5-7394-4177-8267-42d5b32bc474",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"Session status is pending\", function () {",
" pm.expect(jsonData.status).to.equal(\"pending\");",
"})",
"",
"pm.test(\"Start and Finish date not set\", function () {",
" pm.expect(jsonData.date_started).to.be.null;",
" pm.expect(jsonData.date_finished).to.be.null;",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Read Tests of Session",
"event": [
{
"listen": "test",
"script": {
"id": "448b6a0c-135d-42ef-8bc0-b4b1ce4ab8a0",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"All tests are pending tests\", function () {",
" pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);",
" pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);",
"})",
"",
"const availableTests = pm.globals.get(\"available_tests\");",
"const includedTests = pm.globals.get(\"included_tests\");",
"const excludedTests = pm.globals.get(\"excluded_tests\");",
"",
"pm.test(\"Selected subset of tests are part of the session\", function () {",
" for (var api of Object.keys(jsonData.pending_tests)) {",
" for (var includedTest of includedTests) {",
" if (includedTest.split(\"/\").find(part => !!part) === api) {",
" var includeRegExp = new RegExp(\"^\" + includedTest, \"i\");",
" for (var test of jsonData.pending_tests[api]) {",
" pm.expect(test).to.match(regex);",
" }",
" break;",
" }",
" }",
" for (var excludedTest of excludedTests) {",
" if (excludedTest.split(\"/\").find(part => !!part) === api) {",
" var excludeRegExp = new RegExp(\"^\" + excludedTest, \"i\");",
" for (var test of jsonData.pending_tests[api]) {",
" pm.expect(test).to.not.match(regex);",
" }",
" break;",
" }",
" }",
" }",
"});",
"",
"const sessionTests = jsonData.pending_tests;",
"",
"pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Clean up: Delete session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "a16eac8e-9609-4314-abd8-a5c470537b52",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "5df55957-0bbb-4db8-9ab9-d8a70ce37bc5",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "With Expiration",
"item": [
{
"name": "Create Session With Expiration",
"event": [
{
"listen": "test",
"script": {
"id": "6c4aa702-ae3a-44a4-b886-b3e883de4d32",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "893672a9-c666-4790-b6a7-e0ce7afda482",
"exec": [
"var expirationDate = Date.now() + 3000;",
"pm.globals.set(\"expiration_date\", expirationDate);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"expiration_date\": {{expiration_date}}\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Expired Session",
"event": [
{
"listen": "test",
"script": {
"id": "f6b31d37-a98b-4110-80a2-f78db6f2e26f",
"exec": [
"pm.test(\"Status code is 404\", function () {",
" pm.response.to.have.status(404);",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "d41cf31b-c8e8-455f-aa69-527af5fbd66b",
"exec": [
"var expirationDate = pm.globals.get(\"expiration_date\");",
"",
"var timeout = expirationDate - Date.now() + 1000",
"",
"console.log(timeout)",
"",
"setTimeout(function () {}, timeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Clean up: Delete session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "read session",
"item": [
{
"name": "Prep: Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "090ca1bc-cbee-4d7b-b19f-fc1f4bb879a0",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "232aff11-3cdc-4994-af42-5e3574583814",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"tests\");",
" pm.expect(typeof jsonData.tests).to.equal(\"object\");",
" pm.expect(jsonData.tests).to.have.property(\"include\");",
" pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);",
" pm.expect(jsonData.tests).to.have.property(\"exclude\");",
" pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"types\");",
" pm.expect(jsonData.types).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"user_agent\");",
" pm.expect(typeof jsonData.user_agent).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"timeouts\");",
" pm.expect(typeof jsonData.timeouts).to.equal(\"object\")",
" pm.expect(jsonData.timeouts).to.have.property(\"automatic\");",
" pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");",
" pm.expect(jsonData.timeouts).to.have.property(\"manual\");",
" pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");",
" pm.expect(jsonData).to.have.property(\"browser\");",
" pm.expect(typeof jsonData.browser).to.equal(\"object\");",
" pm.expect(jsonData.browser).to.have.property(\"name\");",
" pm.expect(typeof jsonData.browser.name).to.equal(\"string\");",
" pm.expect(jsonData.browser).to.have.property(\"version\");",
" pm.expect(typeof jsonData.browser.version).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"reference_tokens\");",
" pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"labels\");",
" pm.expect(jsonData.labels).to.be.an.instanceof(Array);",
" pm.expect(jsonData).to.have.property(\"date_created\");",
"});",
"",
"pm.test(\"Configuration is default\", function () {",
" pm.expect(jsonData.token).to.match(tokenRegex);",
" pm.expect(jsonData.tests.include).to.include(\"/\");",
" pm.expect(jsonData.types).to.include(\"automatic\");",
" pm.expect(jsonData.types).to.include(\"manual\");",
" pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");",
" pm.expect(jsonData.timeouts.automatic).to.equal(60000);",
" pm.expect(jsonData.timeouts.manual).to.equal(300000);",
" pm.expect(jsonData.browser.name).to.equal(\"Other\");",
" pm.expect(jsonData.browser.version).to.equal(\"0\");",
" pm.expect(jsonData.is_public).to.equal(false);",
" pm.expect(jsonData.reference_tokens).to.be.empty;",
" pm.expect(jsonData.labels).to.be.empty;",
" pm.expect(new Date(jsonData.date_created).getTime()).to.be.below(Date.now());",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
},
{
"name": "Clean up: Delete session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "read session status",
"item": [
{
"name": "Prep: Create Session No Configuration",
"event": [
{
"listen": "test",
"script": {
"id": "73cbeeb0-019b-4331-b0ec-ef9d3f1e0494",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read Session Status",
"event": [
{
"listen": "test",
"script": {
"id": "ba142b55-2454-4472-bcf9-669b0bb7bab9",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(typeof jsonData.token).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"status\");",
" pm.expect(typeof jsonData.status).to.equal(\"string\");",
" pm.expect(jsonData).to.have.property(\"expiration_date\");",
" pm.expect(jsonData.expiration_date).to.be.null;",
" pm.expect(jsonData).to.have.property(\"date_started\");",
" pm.expect(jsonData).to.have.property(\"date_finished\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"status"
]
}
},
"response": []
},
{
"name": "Clean up: Delete session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "read sessions",
"item": [
{
"name": "Without query parameters",
"item": [
{
"name": "Read sessions",
"event": [
{
"listen": "test",
"script": {
"id": "f443955f-b57e-4801-8eac-547597381615",
"exec": [
"const response = pm.response.json();",
"",
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"JSON structure as expected\", function() {",
" pm.expect(response).to.have.property(\"items\");",
" pm.expect(response[\"items\"]).to.be.instanceof(Array);",
" pm.expect(response).to.have.property(\"_links\");",
" pm.expect(response[\"_links\"]).to.be.instanceof(Object);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"_wave",
"api",
"sessions"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Containing created session",
"item": [
{
"name": "Prep: Create session",
"event": [
{
"listen": "test",
"script": {
"id": "2ca80dee-f9a5-4e0b-bead-6ab871d9edf8",
"exec": [
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read sessions",
"event": [
{
"listen": "test",
"script": {
"id": "fbf5eafb-0ae7-4105-8df5-51bb53b0c595",
"exec": [
"const token = pm.globals.get(\"session_token\");",
"const response = pm.response.json();",
"",
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"JSON structure as expected\", function() {",
" pm.expect(response).to.have.property(\"items\");",
" pm.expect(response[\"items\"]).to.be.instanceof(Array);",
" pm.expect(response).to.have.property(\"_links\");",
" pm.expect(response[\"_links\"]).to.be.instanceof(Object);",
"});",
"",
"pm.test(\"Created session's token in response\", function() {",
" pm.expect(response.items).to.contain(token);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"_wave",
"api",
"sessions"
],
"query": [
{
"key": "index",
"value": "0"
},
{
"key": "count",
"value": "1000"
}
]
}
},
"response": []
},
{
"name": "Clean up: Delete Session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "With configuration expansion",
"item": [
{
"name": "Prep: Create session",
"event": [
{
"listen": "test",
"script": {
"id": "bdd64594-c874-4eb2-8b36-4c37cea0f0cb",
"exec": [
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read sessions",
"event": [
{
"listen": "test",
"script": {
"id": "6732aedf-d99d-416f-b93d-98bc0404ef61",
"exec": [
"const token = pm.globals.get(\"session_token\");",
"const response = pm.response.json();",
"",
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"JSON structure as expected\", function() {",
" pm.expect(response).to.have.property(\"items\");",
" pm.expect(response[\"items\"]).to.be.instanceof(Array);",
" pm.expect(response).to.have.property(\"_links\");",
" pm.expect(response[\"_links\"]).to.be.instanceof(Object);",
" pm.expect(response).to.have.property(\"_embedded\");",
" pm.expect(response[\"_embedded\"]).to.be.instanceof(Object);",
" pm.expect(response[\"_embedded\"]).to.have.property(\"configuration\");",
" pm.expect(response[\"_embedded\"][\"configuration\"]).to.be.instanceof(Array);",
"});",
"",
"pm.test(\"Created session's token in response\", function() {",
" pm.expect(response.items).to.contain(token);",
"});",
"",
"pm.test(\"Created session's token in embedded configuration\", function() {",
" let tokenInConfigurationList = false;",
" let configurations = response._embedded.configuration;",
" for (let configuration of configurations) {",
" if (configuration.token !== token) continue;",
" tokenInConfigurationList = true;",
" }",
" pm.expect(tokenInConfigurationList).to.equal(true);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000&expand=configuration",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"_wave",
"api",
"sessions"
],
"query": [
{
"key": "index",
"value": "0"
},
{
"key": "count",
"value": "1000"
},
{
"key": "expand",
"value": "configuration"
}
]
}
},
"response": []
},
{
"name": "Clean up: Delete Session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "With status expansion",
"item": [
{
"name": "Prep: Create session",
"event": [
{
"listen": "test",
"script": {
"id": "3319e417-dd54-495f-a452-5519d2a61082",
"exec": [
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
},
{
"name": "Read sessions",
"event": [
{
"listen": "test",
"script": {
"id": "6ca3480a-3224-4bf8-a466-fdcb06338795",
"exec": [
"const token = pm.globals.get(\"session_token\");",
"const response = pm.response.json();",
"",
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"JSON structure as expected\", function() {",
" pm.expect(response).to.have.property(\"items\");",
" pm.expect(response[\"items\"]).to.be.instanceof(Array);",
" pm.expect(response).to.have.property(\"_links\");",
" pm.expect(response[\"_links\"]).to.be.instanceof(Object);",
" pm.expect(response).to.have.property(\"_embedded\");",
" pm.expect(response[\"_embedded\"]).to.be.instanceof(Object);",
" pm.expect(response[\"_embedded\"]).to.have.property(\"status\");",
" pm.expect(response[\"_embedded\"][\"status\"]).to.be.instanceof(Array);",
"});",
"",
"pm.test(\"Created session's token in response\", function() {",
" pm.expect(response.items).to.contain(token);",
"});",
"",
"pm.test(\"Created session's token in embedded status\", function() {",
" let tokenInStatusList = false;",
" let statuses = response._embedded.status;",
" for (let status of statuses) {",
" if (status.token !== token) continue;",
" tokenInStatusList = true;",
" }",
" pm.expect(tokenInStatusList).to.equal(true);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000&expand=status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"_wave",
"api",
"sessions"
],
"query": [
{
"key": "index",
"value": "0"
},
{
"key": "count",
"value": "1000"
},
{
"key": "expand",
"value": "status"
}
]
}
},
"response": []
},
{
"name": "Clean up: Delete Session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "Results API",
"item": [
{
"name": "upload api",
"item": [
{
"name": "create session",
"item": [
{
"name": "Prep: Read Available Tests",
"event": [
{
"listen": "test",
"script": {
"id": "1f3d8b67-aab8-44a0-abf4-e320a6b27755",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var availableTests = pm.response.json();",
"",
"var includedTests = [];",
"var excludedTests = [];",
"var specialTimeoutTest = \"\";",
"",
"var apis = Object.keys(availableTests);",
"for(var api of apis) {",
" if (availableTests[api].length > 50) {",
" var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part)[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);",
" if (subDirs.length > 2) {",
" includedTests.push(\"/\" + api);",
" excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);",
" specialTimeoutTest = availableTests[api][availableTests[api].length - 1];",
" break;",
" }",
" ",
" }",
"}",
"",
"var usedApi = apis[0];",
"",
"pm.globals.set(\"api_name\", usedApi);",
"pm.globals.set(\"test\", availableTests[usedApi][0]);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests"
]
}
},
"response": []
},
{
"name": "Create Session With One test",
"event": [
{
"listen": "test",
"script": {
"id": "f42479d4-f723-4843-ba91-f30019ebd975",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");",
"",
"pm.test(\"Responds with token in JSON format\", function () {",
" var jsonData = pm.response.json();",
" pm.expect(jsonData).to.have.property(\"token\");",
" pm.expect(jsonData.token).to.match(tokenRegex);",
"});",
"",
"",
"const response = pm.response.json();",
"const token = response.token;",
"pm.globals.set(\"session_token\", token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tests\": {\n \"include\": [\"{{test}}\"]\n }\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"id": "9f8fc606-25ee-45de-bcd8-57735900701b",
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"id": "be2341a8-1598-41b0-96a6-cfd049badd07",
"type": "text/javascript",
"exec": [
""
]
}
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "create results",
"item": [
{
"name": "Start Session",
"event": [
{
"listen": "test",
"script": {
"id": "897e04ae-d0a2-4a67-9488-2bdeb55db06b",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}",
"start"
]
}
},
"response": []
},
{
"name": "Read Next Test of Session",
"event": [
{
"listen": "test",
"script": {
"id": "95b382c6-9d08-41b9-80d1-40dc0217cc09",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"const response = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(Object.keys(response)).to.have.lengthOf(1);",
" pm.expect(response).to.have.property(\"next_test\");",
" pm.expect(typeof response.next_test).to.equal(\"string\");",
"});",
"",
"const nextTest = response.next_test;",
"pm.globals.set(\"current_test_url\", nextTest);",
"if (!nextTest) return;",
"",
"const parameters = nextTest.split(\"?\")[1].split(\"&\");",
"let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];",
"test = decodeURIComponent(test);",
"test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];",
"",
"pm.globals.set(\"current_test\", test);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"tests",
"{{session_token}}",
"next"
]
}
},
"response": []
},
{
"name": "Create Result",
"event": [
{
"listen": "test",
"script": {
"id": "67b23ac9-5254-4b7b-90bf-930a9661a614",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}"
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "upload new results",
"item": [
{
"name": "Download current results",
"event": [
{
"listen": "test",
"script": {
"id": "984c79db-5ae1-4c22-8b62-6eccabfaeb98",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"var results = jsonData.results;",
"",
"pm.globals.set(\"results\", results);"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "a9a46b5f-2dd3-4fa7-a482-7186ac01a4d6",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"{{api_name}}",
"json"
]
}
},
"response": []
},
{
"name": "Read Current Compact Results",
"event": [
{
"listen": "test",
"script": {
"id": "f4974495-2e84-4962-9259-1d5501fb7a3f",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.globals.set(\"compact_results\", jsonData);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"compact"
]
}
},
"response": []
},
{
"name": "Upload Results Api Json",
"event": [
{
"listen": "test",
"script": {
"id": "4a7df46d-546c-4cf4-8c6a-9b13eaa0be32",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "e2196348-a4a0-48d3-bd72-f591f0b65cf0",
"exec": [
"var results = pm.globals.get(\"results\");",
"var newSubResult = ",
" {",
" \"name\": \"placeholder sub test\",",
" \"status\": \"PASS\",",
" \"message\": \"this is a placeholder sub test\"",
" };",
"",
"results[0].subtests.push(newSubResult);",
"resultsString = JSON.stringify(results);",
"pm.globals.set(\"resultsString\", resultsString);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "raw",
"raw": "{\n \"results\": {{resultsString}}\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"{{api_name}}",
"json"
]
}
},
"response": []
},
{
"name": "Check if changes took effect",
"event": [
{
"listen": "test",
"script": {
"id": "8c45fd6d-ca98-4393-ace6-c01563d7c1ec",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"pm.test(\"Returned results contain new result\", function () {",
" var jsonData = pm.response.json();",
" var results = jsonData.results;",
"",
" var oldResults = pm.globals.get(\"results\");",
"",
" pm.expect(oldResults[0].subtests.length + 1).to.equal(results[0].subtests.length);",
"});",
""
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "0c9e31fc-1931-4dcd-978f-39e2a38f9a3f",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"{{api_name}}",
"json"
]
}
},
"response": []
},
{
"name": "Check changes in Compact Results",
"event": [
{
"listen": "test",
"script": {
"id": "6e30b533-18f9-41bc-af65-bdde323c215a",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"var test = pm.globals.get(\"test\");",
"var oldCompactResults = pm.globals.get(\"compact_results\");",
"",
"pm.test(\"passed test increased\", function () {",
" var api = test.split(\"/\").find(part => !!part);",
" pm.expect(jsonData[api].pass).to.equal(oldCompactResults[api].pass + 1);",
"})"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"results",
"{{session_token}}",
"compact"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "clean up",
"item": [
{
"name": "Clean up: Delete session",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"sessions",
"{{session_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "General API",
"item": [
{
"name": "server status",
"item": [
{
"name": "Read server status",
"event": [
{
"listen": "test",
"script": {
"id": "8b5b4c23-db0a-4b81-9349-ce8ead64bb7a",
"exec": [
"pm.test(\"Status code is 200\", function () {",
" pm.response.to.have.status(200);",
"});",
"",
"var jsonData = pm.response.json();",
"",
"pm.test(\"JSON structure is as expected\", function () {",
" pm.expect(jsonData).to.have.property(\"import_results_enabled\");",
" pm.expect(typeof jsonData.import_results_enabled).to.equal(\"boolean\");",
" pm.expect(jsonData).to.have.property(\"reports_enabled\");",
" pm.expect(typeof jsonData.reports_enabled).to.equal(\"boolean\");",
" pm.expect(jsonData).to.have.property(\"read_sessions_enabled\");",
" pm.expect(typeof jsonData.read_sessions_enabled).to.equal(\"boolean\");",
" pm.expect(jsonData).to.have.property(\"version_string\");",
" pm.expect(typeof jsonData.version_string).to.equal(\"string\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/status",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"status"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
},
{
"name": "Devices API",
"item": [
{
"name": "create",
"item": [
{
"name": "Create device",
"event": [
{
"listen": "test",
"script": {
"id": "286426ec-c394-48a4-a90f-c6dd80c7bef1",
"exec": [
"pm.test(\"Successful POST request\", function () {",
" pm.expect(pm.response.code).to.be.oneOf([200,201,202]);",
"});",
"",
"var response = pm.response.json();",
"",
"pm.test('Schema is valid', function() {",
" pm.expect(response).to.have.property(\"token\");",
"});",
"",
"pm.test('Data is valid', function() {",
" pm.expect(typeof response.token).to.equal(\"string\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
},
{
"name": "Clean up: Wait device timeout",
"event": [
{
"listen": "test",
"script": {
"id": "3bdb0f7c-1261-465e-9b02-0070005f0c43",
"exec": [
""
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "a1cf5880-7b8e-4bc6-9d92-59632a719c54",
"exec": [
"var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500",
"",
"setTimeout(function () {}, timeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "read device",
"item": [
{
"name": "Device not found",
"item": [
{
"name": "Read device",
"event": [
{
"listen": "test",
"script": {
"id": "a4401cbc-0a3a-4c2d-b1ed-e7d6867614ff",
"exec": [
"pm.test(\"Successful GET request\", function () {",
" pm.expect(pm.response.code).to.equal(404);",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "1644fd70-b4c4-4207-8e12-67752a984417",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/invalid_token",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
"invalid_token"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Device found",
"item": [
{
"name": "Prep: Create device",
"event": [
{
"listen": "test",
"script": {
"id": "c4f14137-5ced-449b-a872-b7d541e2f6af",
"exec": [
"var response = pm.response.json();",
"var token = response.token;",
"",
"pm.globals.set(\"device_token\", token)"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
},
{
"name": "Read device",
"event": [
{
"listen": "test",
"script": {
"id": "61a840f1-d3cd-4d7a-a54f-30da1266e48f",
"exec": [
"pm.test(\"Successful GET request\", function () {",
" pm.expect(pm.response.code).to.be.oneOf([200]);",
"});",
"",
"var response = pm.response.json();",
"",
"pm.test('Schema is valid', function() {",
" pm.expect(response).to.have.property(\"token\");",
" pm.expect(response).to.have.property(\"user_agent\");",
" pm.expect(response).to.have.property(\"last_active\");",
" pm.expect(response).to.have.property(\"name\");",
"});",
"",
"pm.test('Data is valid', function() {",
" pm.expect(typeof response.token).to.equal(\"string\");",
" pm.expect(typeof response.user_agent).to.equal(\"string\");",
" pm.expect(typeof response.last_active).to.equal(\"string\");",
" pm.expect(typeof response.name).to.equal(\"string\");",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/{{device_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
"{{device_token}}"
]
}
},
"response": []
},
{
"name": "Clean up: Wait device timeout",
"event": [
{
"listen": "test",
"script": {
"id": "17112336-b962-472d-86a8-7872ff9876d1",
"exec": [
""
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "912939cc-1685-4e1f-b0a6-696b264870ca",
"exec": [
"var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500",
"",
"setTimeout(function () {}, timeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "Timed out device",
"item": [
{
"name": "Prep: Create device",
"event": [
{
"listen": "test",
"script": {
"id": "c99b9318-1e50-4702-9d81-53d87faa1080",
"exec": [
"var response = pm.response.json();",
"var token = response.token;",
"",
"pm.globals.set(\"device_token\", token)"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
},
{
"name": "Wait device timeout",
"event": [
{
"listen": "test",
"script": {
"id": "89517dc9-31b4-40e7-89e4-99dd6e792e6a",
"exec": [
""
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "ed20bbf6-4f31-4d91-a07b-7a0b4afcf161",
"exec": [
"var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500",
"",
"setTimeout(function () {}, timeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
},
{
"name": "Read device",
"event": [
{
"listen": "test",
"script": {
"id": "7b7496f5-2fdc-470c-b394-2a5ae7d29da2",
"exec": [
"pm.test(\"Successful GET request\", function () {",
" pm.expect(pm.response.code).to.equal(404);",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "1807f152-7ef4-4277-9db6-1bff53d6cc8b",
"exec": [
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/{{device_token}}",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
"{{device_token}}"
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
},
{
"name": "read devices",
"item": [
{
"name": "Prep: Create device A",
"event": [
{
"listen": "test",
"script": {
"id": "a7803c5c-f371-4ae0-8b08-1c06995c9b60",
"exec": [
"var response = pm.response.json();",
"var token = response.token;",
"",
"pm.globals.set(\"device_token_a\", token)"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
},
{
"name": "Prep: Create device B",
"event": [
{
"listen": "test",
"script": {
"id": "02450903-aef9-4ee6-9d48-94ba9b5fd54c",
"exec": [
"var response = pm.response.json();",
"var token = response.token;",
"",
"pm.globals.set(\"device_token_b\", token)"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
},
{
"name": "Read devices",
"event": [
{
"listen": "test",
"script": {
"id": "1612417b-bed8-48d5-a6a3-39d0d0fe6932",
"exec": [
"pm.test(\"Successful GET request\", function () {",
" pm.expect(pm.response.code).to.be.oneOf([200]);",
"});",
"",
"var response = pm.response.json();",
"",
"pm.test('Schema is valid', function() {",
" pm.expect(response).to.be.instanceof(Array);",
" response.forEach(element => {",
" pm.expect(element).to.have.property(\"token\");",
" pm.expect(element).to.have.property(\"user_agent\");",
" pm.expect(element).to.have.property(\"last_active\");",
" pm.expect(element).to.have.property(\"name\");",
" })",
"});",
"",
"pm.test('Data is valid', function() {",
" pm.expect(response).to.have.lengthOf(2);",
" var devices_left = [",
" pm.globals.get(\"device_token_a\"), ",
" pm.globals.get(\"device_token_b\")",
" ]",
" response.forEach(element => {",
" pm.expect(typeof element.token).to.equal(\"string\");",
" pm.expect(typeof element.user_agent).to.equal(\"string\");",
" pm.expect(typeof element.last_active).to.equal(\"string\");",
" pm.expect(typeof element.name).to.equal(\"string\");",
" pm.expect(devices_left).to.include(element.token);",
" devices_left.splice(devices_left.indexOf(element.token), 1);",
" })",
"});"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
},
{
"name": "Clean up: Wait device timeout",
"event": [
{
"listen": "test",
"script": {
"id": "9b7ff623-8aac-46d1-9c56-1ceb8acc2de6",
"exec": [
""
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"id": "c0fbf742-f75e-4f3b-a576-75c9d5e0f72d",
"exec": [
"var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500",
"",
"setTimeout(function () {}, timeout);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/",
"protocol": "{{protocol}}",
"host": [
"{{host}}"
],
"port": "{{port}}",
"path": [
"{{web_root}}",
"api",
"devices",
""
]
}
},
"response": []
}
],
"protocolProfileBehavior": {},
"_postman_isSubFolder": true
}
],
"protocolProfileBehavior": {}
}
],
"protocolProfileBehavior": {}
}